//package com.kfgj.hkp.manager.log.impl;
//
//import cn.hutool.core.util.ObjectUtil;
//import com.kfgj.hkp.common.context.CurrentContext;
//import com.kfgj.hkp.common.context.RequestContext;
//import com.kfgj.hkp.common.dataaccess.PageResult;
//import com.kfgj.hkp.common.mongo.dao.IBaseDao;
//import com.kfgj.hkp.common.mongo.service.BaseService;
//import com.kfgj.hkp.common.utils.DateFormatUtil;
//import com.kfgj.hkp.common.utils.PageModel;
////import com.kfgj.hkp.dao.log.BaseMongoRep;
//import com.kfgj.hkp.dao.log.IBaseOperationMongoDao;
//import com.kfgj.hkp.entity.log.BaseOperationEntity;
//import com.kfgj.hkp.entity.user.UserEntity;
//import com.kfgj.hkp.manager.log.BaseOperationMongoManager;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.core.task.TaskExecutor;
//import org.springframework.stereotype.Service;
//
//import javax.servlet.http.HttpServletRequest;
//import java.util.ArrayList;
//import java.util.Date;
//import java.util.List;
//import java.util.Map;
//
///**
// * @author liwensihan
// * @date 2019年5月30日
// */
//@Service
//public class BaseOperationMongoManagerImpl extends BaseService<BaseOperationEntity> implements BaseOperationMongoManager {
//
//
//    @Autowired
//    private TaskExecutor taskExecutor;
//
//    @Autowired
//    private IBaseOperationMongoDao baseOperationMongoDao;
//    @Autowired
//    private BaseMongoRep baseMongoRep;
//
//    @Override
//    protected IBaseDao<BaseOperationEntity> getDao() {
//        return baseOperationMongoDao;
//    }
//
//
//    @Override
//    public void save(HttpServletRequest request, String path, Object handler) {
//        UserEntity user = (UserEntity) CurrentContext.getUserInfo();
//        RequestContext requestContext = CurrentContext.getRequestContext();
//        taskExecutor.execute(() -> {
//            if (ObjectUtil.isNotNull(user)) {
//
//                BaseOperationEntity baseOperationEntity =
//                        new BaseOperationEntity(user.getUserName(), new Date(), false,
//                                path, user.getUserCode(), requestContext.getRequestIp(),
//                                requestContext.getClientType().getName());
//
//                baseOperationMongoDao.save(baseOperationEntity);
//            }
//
//        });
//    }
//
//    @Override
//    public void save(String path, String requestParam) {
//
//
//        UserEntity user = (UserEntity) CurrentContext.getUserInfo();
//        RequestContext requestContext = CurrentContext.getRequestContext();
//
//        taskExecutor.execute(() -> {
//
//            if (ObjectUtil.isNotNull(user)) {
//                BaseOperationEntity baseOperationEntity =
//                        new BaseOperationEntity(user.getUserName(), new Date(), false,
//                                path, user.getUserCode(), requestContext.getRequestIp(),
//                                requestContext.getClientType().getName(),requestParam);
//
//                //baseOperationMongoDao.save(baseOperationEntity);
//                baseMongoRep.save(baseOperationEntity);
//            }
//
//        });
//    }
//
//    @Override
//    public PageResult<BaseOperationEntity> findByMap(Map<String, Object> map, Integer start, Integer pageSize, String create_time, Boolean aFalse) {
//        List<String> keys = new ArrayList<>();
//        List<Object> values = new ArrayList<>();
//        if (map.get("id") != null && map.get("id") != "") {
//            keys.add("id");
//            values.add(map.get("id"));
//        }
//
//        if (map.get("url") != null && map.get("url") != "") {
//            keys.add("url");
//            values.add(map.get("url"));
//        }
//
//        if (map.get("optCode") != null && map.get("optCode") != "") {
//            keys.add("optCode");
//            values.add(map.get("optCode"));
//        }
//
//        if (map.get("createTimeStart") != null) {
//            keys.add("createTimeStart");
//            values.add(DateFormatUtil.dayBegin((Date) map.get("createTimeStart")));
//        }
//
//        if (map.get("createTimeEnd") != null) {
//            keys.add("createTimeEnd");
//            values.add(DateFormatUtil.dayEnd((Date) map.get("createTimeEnd")));
//        }
//
//        PageModel<BaseOperationEntity> model = this.pageByProps(start, pageSize, map,
//                keys.size() > 0 ? keys.toArray(new String[keys.size()]) : new String[]{}, values.size() > 0 ? values.toArray() : new Object[]{}, "createTime desc");
//        if (model.getList() != null) {
//
//            return new PageResult(model.getPageNo(), model.getTotalCount(), model.getPageSize(), model.getList());
//
//        } else {
//            return null;
//        }
//
//    }
//
//    @Override
//    public List<BaseOperationEntity> findUrlsByOptCode() {
//       return getDao().findColumnByProp("url");
//    }
//
//    @Override
//    public List<BaseOperationEntity> findClientType() {
//        return getDao().findColumnByProp("clientType");
//    }
//
//    @Override
//    public BaseOperationEntity findOne(Map<String, Object> map) {
//        List<String> keys = new ArrayList<>();
//        List<Object> values = new ArrayList<>();
//        if (map.get("id") != null && map.get("id") != "") {
//            keys.add("id");
//            values.add(map.get("id"));
//        }
//        if (map.get("url") != null && map.get("url") != "") {
//            keys.add("url");
//            values.add(map.get("url"));
//        }
//        if (map.get("optCode") != null && map.get("optCode") != "") {
//            keys.add("optCode");
//            values.add(map.get("optCode"));
//        }
//
//
//        return this.uniqueByProps(map, (keys.toArray(new String[keys.size()])), values.toArray());
//    }
//}